package edu.geo.containers.geomdomain;

import java.io.Serializable;

import edu.geo.containers.geom.impl.Point;

public class GeometricDomainFault implements Serializable {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = -3415392554643646926L;

	/**
	 * Localización de la infracción en el dominio geométrico.
	 */
	private Point location;
	
	/**
	 * Tipo y descripción de la infracción en el dominio geométrico.
	 */			
	private EGeomDomainClosureConditionType type;
	
	/**
	 * 
	 * @param location Punto donde se produce la infracción.
	 * @param type Tipo de condición de clausura que se está incumpliendo.
	 */
	public GeometricDomainFault(Point location,
			EGeomDomainClosureConditionType type) {
		super();
		this.location = location;
		this.type = type;
	}

	public Point getLocation() {
		return location;
	}

	public void setLocation(Point location) {
		this.location = location;
	}

	public EGeomDomainClosureConditionType getType() {
		return type;
	}

	public void setType(EGeomDomainClosureConditionType type) {
		this.type = type;
	}

	@Override
	public boolean equals(Object obj) {
		GeometricDomainFault geomDomainFault = (GeometricDomainFault) obj;
		boolean result = this.getLocation().getCoordinate().equals(geomDomainFault.getLocation().getCoordinate())
				&& this.getType().toString().equals(geomDomainFault.getType().toString());
		return result;
	}

	@Override
	public int hashCode() {
		return this.getLocation().getCoordinate().hashCode() +
				this.getType().hashCode();
	}
	
	


}
